{ "err_no": 0, "err_msg": "success", "data": { "booklet": { "booklet_id": "7065201654273933316", "base_info": { "id": 0, "booklet_id": "7065201654273933316", "title": "NestJS 项目实战", "price": 2990, "category_id": "6809637767543259144", "status": 1, "user_id": "2717648473821736", "verify_status": 4, "summary": "从 0 搭建网关系统,玩转 NestJS 开发", "cover_img": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/288aed1ab1f044f08f541cfd12b5c221~tplv-k3u1fbpfcp-watermark.image?", "section_count": 19, "section_ids": "7065271242613325862|7065272316086714407|7108165092927078439|7065201654554951718|7065271242755932192|7091306676820639748|7065271242944839712|7087196406720512011|7065271708764078083|7111992826132430859|7118730236421734403|7093785347636592673|7093856759453843489|7093857778350948363|7091306676988411937|7093857133854195745|7093856620588826627|7093856931827154955|7093856547633102851|7093858634148347936", "is_finished": 0, "ctime": 1651674292, "mtime": 1657855331, "put_on_time": 1657097461, "pull_off_time": -62135596800, "finished_time": -62135596800, "recycle_bin_time": -62135596800, "verify_time": -62135596800, "submit_time": 1657855331, "top_time": 1657097527, "wechat_group_img": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/369e5228752a41e29b68a80e4e7fb735~tplv-k3u1fbpfcp-watermark.image?", "wechat_group_desc": "", "wechat_group_signal": "NestJS76", "read_time": 15802, "buy_count": 1386, "course_type": 1, "background_img": "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b17de268e21b41bcbc7a9bf2cc4f69d3~tplv-k3u1fbpfcp-watermark.image?", "is_distribution": 1, "distribution_img": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2fd5830402f44e968c14fb5bf934b871~tplv-k3u1fbpfcp-zoom-1.image?", "commission": 598, "can_vip_borrow": false, "is_sign": false }, "reading_progress": { "id": 0, "booklet_id": "7065201654273933316", "user_id": "3210229681503629", "status": 1, "buy_type": 1, "reading_end": 0, "reading_progress": 12, "last_section_id": "7065201654554951718", "has_update": 1, "last_rtime": 1658132015, "ctime": 1658128586, "mtime": 1658224491, "valid_begin_time": 0, "valid_end_time": 0, "borrow_times": 0 }, "user_info": { "user_id": "2717648473821736", "user_name": "CookieBoty", "company": "行云集团", "job_title": "前端小兵成长营", "avatar_large": "https://p3-passport.byteacctimg.com/img/user-avatar/e7a5ef27bfd6a7a336a4043fa6ca160d~300x300.image", "level": 4, "description": "工资到位,四皇干废", "followee_count": 40, "follower_count": 2374, "post_article_count": 39, "digg_article_count": 312, "got_digg_count": 5111, "got_view_count": 331068, "post_shortmsg_count": 19, "digg_shortmsg_count": 5, "isfollowed": false, "favorable_author": 1, "power": 8421, "study_point": 0, "university": { "university_id": "0", "name": "", "logo": "" }, "major": { "major_id": "0", "parent_id": "0", "name": "" }, "student_status": 0, "select_event_count": 0, "select_online_course_count": 0, "identity": 0, "is_select_annual": true, "select_annual_rank": 0, "annual_list_type": 0, "extraMap": {}, "is_logout": 0, "annual_info": [], "account_amount": 0, "user_growth_info": { "user_id": 2717648473821736, "jpower": 0, "jscore": 183.2, "jpower_level": 0, "jscore_level": 4, "jscore_title": "进阶掘友", "author_achievement_list": [], "vip_level": 2, "vip_title": "稳步进阶" }, "is_vip": true }, "event_discount": null, "is_buy": true, "section_updated_count": 12, "is_new": true }, "introduction": { "id": 86255, "section_id": "7065271242613325862", "title": "小册介绍", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "

作者介绍

\n

\"作者简介(2100x389).jpg\"

\n

CookieBoty,目前就职于行云集团体验技术部,负责前端工程化与 C 端业务,参与 DevOps 工作台研发、可视化搭建服务后端等工作。

\n
\n

🔥作者的其他小册:《基于 Node 的 DevOps 实战》也在 8 折促销中👏🏻

\n
\n

小册介绍

\n

\"课程介绍(1624x623).jpg\"

\n

NestJS 是一个用于构建高效、可扩展的 NodeJS 服务端应用程序的框架,提供了对接多种 HTTP 框架的能力,为服务端项目开发提供了认证缓存数据库安全文件处理等一系列开箱即用的方案。相比于 KoaExpressNestJS 的工程化程度更高,更利于项目开发,因此越来越多的团队在大型 Node.js 服务端项目中使用了 NestJS

\n

作为偏后端开发的框架,NestJS 基于 IoC 的开发模式对前端工程师来说并不友好,比如大量的装饰器、反射的用法与常规的 JavaScript 开发模式不太一样。

\n

基于此,本小册将通过两个模块,带你学习NestJS

\n

第一个基础学习模块:将通过搭建一套定制化的脚手架来学习 NestJS 框架的使用,了解 NestJS 常用的 API、插件等,熟悉 IoC 的开发模式。

\n

第二个项目实战模块:逐步完成用户系统物料系统以及网关基础服务,完成网关服务系统体系的搭建,了解后端服务架构设计、数据库表设计与开发、微服务开发等后端知识体系。

\n

\"image.png\"

\n

同时,小册会尽可能模拟真实场景下项目的开发流程,让前端工程师也能顺利实现服务端项目开发的从 0 到 1

\n

\"\"

\n

你会学到什么?

\n\n

适宜人群

\n\n
\n

不过,本课程并不适合所有同学,以下人群谨慎购买或不推荐购买

\n
\n\n

购买须知

\n
    \n
  1. 本小册为图文形式内容服务,共计 18 节;
  2. \n
  3. 全部文章预计 9 月 15 日更新完成;
  4. \n
  5. 购买用户可享有小册永久的阅读权限;
  6. \n
  7. 购买用户可进入小册微信群,与作者互动;
  8. \n
  9. 掘金小册为虚拟内容服务,一经购买成功概不退款;
  10. \n
  11. 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任;
  12. \n
  13. 在掘金小册阅读过程中,如有任何问题,请邮件联系 xiaoce@xitu.io
  14. \n
", "draft_content": "", "draft_title": "小册介绍", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 237, "read_count": 0, "comment_count": 0, "ctime": 1645011651, "mtime": 1645011651, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, "sections": [ { "id": 86261, "section_id": "7065272316086714407", "title": "设计篇:需求分析", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "设计篇:需求分析", "markdown_content": "", "markdown_show": "", "is_free": 1, "read_time": 402, "read_count": 3759, "comment_count": 33, "ctime": 1645011968, "mtime": 1645011968, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": { "id": 0, "booklet_id": "7065201654273933316", "user_id": "3210229681503629", "section_id": "7065272316086714407", "reading_end": 0, "reading_progress": 100, "reading_position": 0, "has_update": 1, "last_rtime": 1658128596, "ctime": 1658128586, "mtime": 1658224619 } }, { "id": 87288, "section_id": "7108165092927078439", "title": "设计篇:技术选型", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "设计篇:技术选型", "markdown_content": "", "markdown_show": "", "is_free": 1, "read_time": 455, "read_count": 2383, "comment_count": 12, "ctime": 1655358155, "mtime": 1655358155, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": { "id": 0, "booklet_id": "7065201654273933316", "user_id": "3210229681503629", "section_id": "7108165092927078439", "reading_end": 0, "reading_progress": 100, "reading_position": 70, "has_update": 1, "last_rtime": 1658128623, "ctime": 1658128597, "mtime": 1658224619 } }, { "id": 86257, "section_id": "7065201654554951718", "title": "新手篇:熟悉 NestJS", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "新手篇:熟悉 NestJS", "markdown_content": "", "markdown_show": "", "is_free": 1, "read_time": 1142, "read_count": 3351, "comment_count": 18, "ctime": 1645011760, "mtime": 1645011760, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": { "id": 0, "booklet_id": "7065201654273933316", "user_id": "3210229681503629", "section_id": "7065201654554951718", "reading_end": 0, "reading_progress": 36, "reading_position": 9, "has_update": 1, "last_rtime": 1658132015, "ctime": 1658128610, "mtime": 1658224619 } }, { "id": 86259, "section_id": "7065271242755932192", "title": "配置篇:基础功能配置", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "配置篇:基础功能配置", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 2806, "read_count": 2222, "comment_count": 43, "ctime": 1645011901, "mtime": 1645011901, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86984, "section_id": "7091306676820639748", "title": "工具篇:飞书应用对接", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "工具篇:飞书应用对接", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 2472, "read_count": 1354, "comment_count": 12, "ctime": 1651500271, "mtime": 1651500271, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86258, "section_id": "7065271242944839712", "title": "工具篇:数据库", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "工具篇:数据库", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 1670, "read_count": 1072, "comment_count": 17, "ctime": 1645011875, "mtime": 1645011875, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86943, "section_id": "7087196406720512011", "title": "基础篇:自定义日志", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "基础篇:自定义日志", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 2042, "read_count": 633, "comment_count": 2, "ctime": 1650681410, "mtime": 1650681410, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86260, "section_id": "7065271708764078083", "title": "基础篇:鉴权与登录", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "基础篇:鉴权与登录", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 3053, "read_count": 810, "comment_count": 6, "ctime": 1645011947, "mtime": 1645011947, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 87331, "section_id": "7111992826132430859", "title": "🏆 学习里程碑:基础篇完结", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "🏆 学习里程碑:基础篇完结", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 387, "read_count": 740, "comment_count": 2, "ctime": 1656379674, "mtime": 1656379674, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 87462, "section_id": "7118730236421734403", "title": "FAQ:学习篇", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "FAQ:学习篇", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 241, "read_count": 378, "comment_count": 3, "ctime": 1657507529, "mtime": 1657507529, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86990, "section_id": "7093785347636592673", "title": "用户篇:RBAC 权限设计", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "用户篇:RBAC 权限设计", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 649, "read_count": 745, "comment_count": 7, "ctime": 1651667203, "mtime": 1651667203, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86992, "section_id": "7093856759453843489", "title": "物料篇:物料系统设计", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 1, "content": "", "draft_content": "", "draft_title": "物料篇:物料系统设计", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 483, "read_count": 399, "comment_count": 2, "ctime": 1651667275, "mtime": 1651667275, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86995, "section_id": "7093857778350948363", "title": "物料篇:物料开发与构建", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "物料篇:物料开发与构建", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 152, "comment_count": 0, "ctime": 1651667536, "mtime": 1651667536, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86989, "section_id": "7091306676988411937", "title": "网关篇:代理与缓存", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "网关篇:代理与缓存", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 130, "comment_count": 0, "ctime": 1651667186, "mtime": 1651667186, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86996, "section_id": "7093857133854195745", "title": "进阶篇:项目拆分", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "进阶篇:项目拆分", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 123, "comment_count": 0, "ctime": 1651667672, "mtime": 1651667672, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86991, "section_id": "7093856620588826627", "title": "进阶篇:微服务", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "进阶篇:微服务", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 125, "comment_count": 0, "ctime": 1651667235, "mtime": 1651667235, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86993, "section_id": "7093856931827154955", "title": "进阶篇:自动化测试", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "进阶篇:自动化测试", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 118, "comment_count": 0, "ctime": 1651667322, "mtime": 1651667322, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86994, "section_id": "7093856547633102851", "title": "进阶篇:应用部署", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "进阶篇:应用部署", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 110, "comment_count": 0, "ctime": 1651667473, "mtime": 1651667473, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null }, { "id": 86997, "section_id": "7093858634148347936", "title": "🏆 完结篇:课程总结", "user_id": "2717648473821736", "booklet_id": "7065201654273933316", "status": 0, "content": "", "draft_content": "", "draft_title": "🏆 完结篇:课程总结", "markdown_content": "", "markdown_show": "", "is_free": 0, "read_time": 0, "read_count": 105, "comment_count": 0, "ctime": 1651667728, "mtime": 1651667728, "is_update": 0, "draft_read_time": 0, "vid": "", "reading_progress": null } ] } }